package com.intelligent.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.intelligent.pojo.ProductionTasks;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

/**
* 针对表【production_tasks(生产任务表)】的数据库操作Mapper
*/
@Mapper
public interface ProductionTasksMapper extends BaseMapper<ProductionTasks> {

    /**
     * 分页联表查询（包含条件查询），返回字段为 Map（无需VO/DTO）
     * @param page 分页参数
     * @param params 条件参数，可选：
     *               taskNo, status, workOrderNo, product, processNo,
     *               processCode, processName, processCodePc, processNamePn,
     *               username,
     *               plannedStartDateBegin, plannedStartDateEnd,
     *               plannedCompletionDateBegin, plannedCompletionDateEnd
     */
    IPage<Map<String, Object>> selectPageWithJoin(Page<?> page,
                                                  @Param("params") Map<String, Object> params);

    /**
     * 按 ID 联表查询，返回 Map（无需VO/DTO）
     */
    Map<String, Object> selectByIdWithJoin(@Param("id") Long id);

    /**
     * 新增生产任务（任务编号在服务层自动生成），无需VO/DTO，直接用 Map 作为入参。
     * 期望的入参 keys 参考表字段：
     * status, workOrderId, product, processNoR, processId, processManagementId, uId,
     * plannedStartDate, plannedCompletionDate, numberCompleted, numberCompletedProducts,
     * productionSchedule, numberRework, reworkRate, scrappedQuantity, scrapRate, finalProcess
     * 以及由服务层生成的 taskNo。
     * 返回受影响行数。
     */
    int insertTask(@Param("params") Map<String, Object> params);

    /**
     * 根据 ID 修改生产任务，SQL 见 XML。
     * 入参直接 Map，不需要 VO/DTO。
     */
    int updateTask(@Param("params") Map<String, Object> params);

    /**
     * 删除生产任务（根据 ID）。
     * 对应 SQL: DELETE FROM production_tasks WHERE id = #{id}
     */
    int deleteTaskById(@Param("id") Long id);
}
